package com.xinzhidi.web.equipment.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.xinzhidi.common.core.page.TableDataInfo;
import com.xinzhidi.web.equipment.domain.EquipmentArchives;
import com.xinzhidi.web.equipment.dto.*;
import com.xinzhidi.web.equipment.vo.EquipmentArchivesInfoVo;
import com.xinzhidi.web.equipment.vo.EquipmentArchivesListVo;

import java.util.List;


/**
 * 存档Service接口
 *
 * @author cx
 * @date 2023-07-12
 */
public interface IEquipmentArchivesService extends IService<EquipmentArchives> {
    /**
     * 查询存档
     *
     * @param id 存档主键
     * @return 存档
     */
    EquipmentArchivesInfoVo selectEquipmentArchivesById(Long id);

    /**
     * 查询存档列表
     *
     * @param dto 存档
     * @return 存档集合
     */
    TableDataInfo<EquipmentArchivesListVo> selectEquipmentArchivesList(EquipmentArchivesListDto dto);

    /**
     * 新增存档
     *
     * @param dto 存档
     * @return 结果
     */
    int insertEquipmentArchives(EquipmentArchivesAddDto dto);

    /**
     * 批量新增存档
     *
     * @param dto 存档
     * @return 结果
     */
    int insertEquipmentArchivesList(EquipmentArchivesAddListDto dto);

    /**
     * 修改存档
     *
     * @param dto 存档
     * @return 结果
     */
    int updateEquipmentArchives(EquipmentArchivesUpdDto dto);

    /**
     * 批量删除存档
     *
     * @param ids 需要删除的存档主键集合
     * @return 结果
     */
    int deleteEquipmentArchivesByIds(Long[] ids);

    /**
     * 删除存档信息
     *
     * @param id 存档主键
     * @return 结果
     */
    int deleteEquipmentArchivesById(Long id);

    /**
     * 恢复存档
     * @param dtoList 要恢复的存档数据
     * @return 结果
     */
    void recoverEquipmentArchives(List<recoverDto> dtoList);

    /**
     * 检查有没有包含的数据。比如楼栋a，下面有个单元b，不能同事恢复楼栋a和单元b的数据
     * @param dtoList 要恢复的存档数据
     * @return 结果
     */
    void checkContain(List<recoverDto> dtoList);
}
